package 爬楼梯;

import java.util.Arrays;

/**
 * createTime: 2025/4/28 23:33
 * description:
 *
 * @author AirMan
 */
public class Solution {
    public int climbStairs(int n) {
        // dp
        // ① dp数组和下标的含义：dp[i]代表爬到第i层有多少种方法
        // ② 确定递推公式：dp[i] = dp[i-1] + dp[i-2]
        // ③ dp数组如何初始化：dp[1] = 1; dp[2] = 2;
        // ④ 确定遍历顺序：从下往上（从前往后）进行遍历
        // ⑤ 举例推导dp数组：当 n 为 10 时 ： 1 2 3 5 8 13 21 34 55 89

        if (n == 0 || n == 1)
            return n;

        int[] dp = new int[n + 1];
        dp[1] = 1;
        dp[2] = 2;
//        System.out.println(Arrays.toString(dp));
        for (int i = 3; i <= n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
//            System.out.println(Arrays.toString(dp));
        }
        return dp[n];
    }
}